Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [viatra-dev] Using VIATRA in AADL model transformation
  • From: Zoltán Ujhelyi <zoltan.ujhelyi@xxxxxxxxxxxxxxxx>
  • Date: Mon, 22 Mar 2021 08:41:17 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=incquerylabs.com; dmarc=pass action=none header.from=incquerylabs.com; dkim=pass header.d=incquerylabs.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4wdrFoN75AVt6iAHKp4niDOS6l+8olcFDIj7Y/1X0x4=; b=TKaJZu0+oIqMxY68iH0OVgTuymfvcZGlqb8zh+sOcewdRlbxaXXxl0Flomyt+zGWgjkWDXE5qNK16OhqX1Ie2CRRc1pmouFW4BcHKbhvwtNX2B5SZynMGOETStbOPo2iXl0yRnPJ94hDktqm2bnBDalx6mNGmZrF1rYrjgEtWFhnRhdVBN9YYr0hyQJbo4mZIfuSrw4WRSGOxxDDSxIYi2URDrhDF/M9MFDHsZILIIXJB/lXRhEV9TLBx/X7eUUfP2wfbU2TeEkk7mGYbYyhd+iVEJxZ7RpwG7cIRDQddszsql+ZoFokUMsq/nk3cus6u49sZQnDNfwOUplPZeSymw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JhNry2LqUVRoUztylquOs5Z5Bh42vFW9QfdLM1YKGRxwoB1ABMh03aDJg1hq1TLVY0WVcwWKRMc6CnjT1fz0PtNKWXHXrAwAsEqRvGvg2yqG/UvRYtSTqRW0PeNnMr/ajEX8Znk0avz/T7xu3pQayIAWFEwD2g8IkKptSItKx8+wPRNyem9V7ruumU/uBB8mTjHPhtVM8m95v/zsc0HEZdp3FujdjCUJ4N0nEQgue8T4GWD42Ue7SDEqX4TeIgupKtfJGrgn1NsF4XrloZ0PhghP1TkD7HFjVN6RjNbR/cNYTZipuXH5sk124RFNcUV6UGvhSRPUyNxj6EeHPfQZRA==
  • Delivered-to: viatra-dev@xxxxxxxxxxx
  • List-archive: <https://www.eclipse.org/mailman/private/viatra-dev/>
  • List-help: <mailto:viatra-dev-request@eclipse.org?subject=help>
  • List-subscribe: <https://www.eclipse.org/mailman/listinfo/viatra-dev>, <mailto:viatra-dev-request@eclipse.org?subject=subscribe>
  • List-unsubscribe: <https://www.eclipse.org/mailman/options/viatra-dev>, <mailto:viatra-dev-request@eclipse.org?subject=unsubscribe>
  • Thread-index: AQHXGYO+BNYiQ4n7G0WhZSlnw83kOKqH8P0AgANwgwCABFm4gA==
  • Thread-topic: [viatra-dev] Using VIATRA in AADL model transformation

Hi Hana,

sorry, but for clarification, I would like to ask whether you selected these patterns by intuition or by some kind of measurements. I am asking this as the Rete network structure used by VIATRA has some very unusual memory characteristics (e.g. a pattern with more constraints might be more efficient to evaluate than another one with a clear subset of parameters). The measurements in the QueryPerformanceTests (point 2 of my original mail) would provide that information. Furthermore, it is unclear to me how the modified pattern relates to the issue (some more detail would be helpful).


Finally, I would like to ask to use the Eclipse Forums instead of private emails, as if I answer the questions there, it might be useful for other users of VIATRA; furthermore, other committers are also monitoring that channel, so you might get a faster response for this reason.

Best regards,
Zoltán
         

Zoltán Ujhelyi PhD | Research Expert

e: zoltan.ujhelyi@xxxxxxxxxxxxxxxx
w: www.incquerylabs.com


On 2021. Mar 19., at 15:15, HANA MKAOUAR <hana.mkaouar@xxxxxxxxxx> wrote:

Hi,
Thank you for your response,

 1. Do you have any patterns that the VQL editor reports warnings for? These warnings find a lot of these cases that are problematic for memory usage.
 2. If you don’t, you could try to use the QueryPerformanceTest implementation [1] to figure out which of the patterns have larger memory usage. If we know which pattern is problematic, it is usually easier to figure out what the issue is and how it could be rewritten to be better.

I actually have 2 patterns find_portconnection_system and find_portconnection_process to match about 15 model objects. I think this causes memory problems when dealing with large models. 
After reflection, I may eliminate some parameters but I will query them in the rule code:
I can replace the commented line  
pattern find_portconnection_system (
system : SystemInstance,  
processdestination : ComponentInstance,
threaddestination : ComponentInstance,  
featuredestination : FeatureInstance,
// processsourceref : ComponentInstance,
// threadsourceref : ComponentInstance,
// processdestinationref : ComponentInstance,
// threaddestinationref : ComponentInstance,
) {
// find is_in_trace(aadl2aadlref, _, processsource, processsourceref);
// find is_in_trace(aadl2aadlref, _, processdestination, processdestinationref);
// find is_in_trace(aadl2aadlref, _, threadsource, threadsourceref);
// find is_in_trace(aadl2aadlref, _, threaddestination, threaddestinationref);
ComponentInstance.connectionInstance(system, portconnection);
ConnectionInstance.kind(portconnection, ::portConnection);
// ...
}
into queries in rule code portConnection2DataAccessatSystem
val processsourceref = engine.is_in_trace.getOneArbitraryMatch (aadl2aadl,null,processsource, null).get.aadlrefElement
val threadsourceref = engine.is_in_trace.getOneArbitraryMatch(aadl2aadl, null, threadsource, null).get.aadlrefElement
// ...
This may be applied for about twenty parameters.
Do you think this may improve the performances?


--
Hana MKAOUAR
PostDoc, Telecom Paris
_______________________________________________
viatra-dev mailing list
viatra-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/viatra-dev


Back to the top