Objet : Developers list for StarPU
Archives de la liste
Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct
Chronologique Discussions
- From: Xinbo Li <lix34545@myumanitoba.ca>
- To: Samuel Thibault <samuel.thibault@inria.fr>
- Cc: "starpu-devel@inria.fr" <starpu-devel@inria.fr>
- Subject: Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct
- Date: Wed, 23 Apr 2025 19:56:53 +0000
- Accept-language: en-US
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=myumanitoba.ca; dmarc=pass action=none header.from=myumanitoba.ca; dkim=pass header.d=myumanitoba.ca; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4F9fMn0lCfCTJHbpXW5n1C6pux62Xcqb3JjuHsvOI3M=; b=Ro6HvAa24bNlonG32jU1ar9beYlqh6YDZMh7JAR2UFpLCNRw+UmbjV8FAWHo+lSL11xQ6mFQ+sQ1v7iW89G56vQRX8oGrIQhtMsoXQ2J7uCi49rJkc812lrIHmrWrdvxco8Pn/3AtSGHkuPpKq/P2hlzqnc5JfW0GMv9DJOjcCBID10pws3s0KEtY5aa85rt5IMp70l4e2vryuYSs7e/iplgYhheqZPrbZFMOfl18w+7oFuAtbmU203usvKhHQB+Q2gKywcMG9PbiVGBQn26Vlawg1Jhn5flxxanOGlbDel/42twsvb1xNuftEJBlBSRPrEyEgApEz6d0KmOXf6Smw==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uuZ5jyiIz/V9Rc6vTZ16KwAX+T3LRSduU9I/pfAYTVJQITzD9SIECcw9OcOeKCT9Na8VVU9sHKxzBmx+H6c2WozR9I1bIVyEYZ5kW/NgqfqPjngaKUwDXZFswpuuketCPqwyICtlE41u0xsLxOlnUPeSDoWlRgZ50Yjgq85OVfQg08LsW2+wzj0Mul/JWERpiSP4nXB2TBnsvrRvVzkleRCzDOGm+jWqjUh9myNSBQyIQKHhju/CzEdYgCn/1AIuQIsTDnCLODc+pzZVXggTUrxI3BjlletedPLy+siz4wAd6wrTw3rLGdbfDYrcqqniDzJQ+fHdflVOCgW8NnTBuQ==
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=lix34545@myumanitoba.ca; spf=Pass smtp.mailfrom=lix34545@myumanitoba.ca; spf=Pass smtp.helo=postmaster@YT5PR01CU002.outbound.protection.outlook.com
- Ironport-data: A9a23:AnYAA6NryO7jbMLvrR1qnMFynXyQoLVcMsEvi/4bfWQNrUp00mMAy zEWDWyPb/aMN2Whc9B/bNm1808B7JKDnNRnTHM5pCpnJ55ogZqcVI7Bdi8cHAvLc5adFBo/h yk6QoOdRCzhZiaE/n9BCpC48T8mk/vgqoPUUIbsIjp2SRJvVBAvgBdin/9RqoNziLBVOSvU0 T/Ji5OZYQLNNwJcaDpOtvrf8kg35ZwehRtB1rAATaAT1LPhvyJNZH4vDfnZB2f1RIBSAtm7S 47rpF1u1j6xE78FU7tJo56jGqE4aua60Tum1hK6b5Ofbi1q/UTe5EqU2M00Mi+7gx3R9zx4J U4kWZaYEW/FNYWU8AgRvoUx/4iT8sSq9ZeeSUVTv/B/wGXEMH/twfVcDnoJHt0c0eJqW0xC/ OIhfWVlghCr34pawZqKdrRUvJx6B/SzZNlZvWx8xzbEC/pgWYrEX6jB+d5f2nE3m9xKGvHdI cEebFKDbjycO1sWYghRUcNk2r7x2xETcBUAwL6Rja428zOPkVAs+L38Ld/cfN2WQs9c2E2Rz o7D1z6gU0hEa4DClFJp9FqIhuz+wAP/XL4TBbyx29NGgFTJ52g6XUh+uVyT+qLj1hHWt8hkA 1AU+yAnsKwu3F6qS9PnVlu5pmSFt1gSQbJ4CPEz8hmQj6bZ/QudLnMVSyZILt0grs4/AzIwv mJlhPvsDD1r9bacT3uR/7yZqy+oMCwcP2gEPHZcF1JcuoSlp5wvhBXSSNolCLSyktD+BTD3x XaNsTQ6gLIQy8UM0s1X4GwrnRqu5ZzITA4H5D7ofTKhxQdkPqOpbpKRvA2zAel7EK6VSVyIv X4hkseY7fwTAZzlqMBraLVcdF1Oz6bUWAAwkWJS848dGyOF0FfLQGy9yDR3JUMsOc8CcDPga 0LVpRlY4JZBO33zNPctOtvoVoIt0LTqEsnjWrbMdN1Sb5NtdQiBuiZzeUqX2GOrm08p+U3eB Xt5WZj3ZZr5If09pNZTewv7+eN1rszZ7T+PLa0XNzz9jdKjiIe9EN/pymemYOEj97+jqw7I6 dtZPMbi40wADLClPneIodVKcQhiwZ0H6Xbe+pQ/mgmrc1IOJY3dI6GNnehJl3FNw/oKy7+Uo C3VtrFwlgKk2iGWQel1VpyTQOi0B8ogxZ7KFSktNkyvwH8tfc6k670HH6bbjpF2nNGPOcVcF qFfE+3ZW6wnYm2ep1w1M8KnxKQ8L0vDuO57F3b+CNTJV8I7H1SRkjIlFyOznBQz4t2f7Jtv+ +37jl2KGvLuhW1KVa7rVR5m9Hvp1VB1pQ64dxKgzgB7IR23qNpZOGbqg+UpIsoBDxzGy3HIn 0yVGBoU762F6YM87NCD1+jOopaLAtlOOBNQP1DayrKqagjc3G6omrFbXMiyIDvyaWLT+YeZX 9tz8c3SCvM8sWhvj5tdCJdulKI32MvureRVzyNiB3T6UG6oAbJBfFiC2fRpiId245N3lTWKc 12q+4RENYWzOcm+LkMjD1c6ZeHSjcMrvGHb0qUoBECrvSNY7KSNC15PDkPdlA1cM7pHH4c3y sgxuMMtylKeizh7Fv2knyxr52C3AXhYaJoet7YeG57NtgUw70NrOLjwK3PT8Y7VTcdhKWwoK WKkv7XDjLFi2UbySXo/OnzT1+57h55VmhR14HIdBlaOiPzXr+QW2UBPzDEJUQhl9BVL/OZtM GxNNUcuB6Gv/S9ttfdTTVKXBABNKx2IyHPfk2JTujXicHCpcWjRIEkWG+WHphkZ+l0BWAlrx uiTzWK9XAv6eM304DAJZndkjP7eVv10yBzJnZG2PsaCHqRiWwHfvI2VWTMqpSfkUOQLv2+Wg clx/e11V7/3Cj5InY0/FLuh9OoxTDKqGTV8ZM9PrYIzM0PSQjWQ4QS1CluQf5pNLsPa8EXjB M1JINlOZiuE1y2Pj246APdRL4AtnPQs4IIIIJHrAWsgs5qesTtbn5bC/QfuhGIQYotPkORsD qjzZj69Amirqn8MoFD0re5AIXueXdkIQCbezdKF2rwFOLxbud49bHxo9KW/ukukFTdO/jWWj VvlXLDXxekz8rZctdLgPYsbDjrlNO6pcvqD9T2ylNF8bdnvF8PqnCFNo3nFOzVmB5cga+5Vp 5+s7uGuhFjkuYwoWV/3g5OCTqlFxfujVdptb/7YEiNoojugauTNvT045GGKGb5Ymoh85+6mZ TeCRumeSNo3Y+pZlVppM3VwMhBFEKnmTLbSlQXkpdS2NxUt+wjmLtSmyHzXUV9mZhI4Y6PZN AullMutt/Z5rZtNDiAqH/tJIYF1C369VLoEd+/ejyi5DG6piGOG47Hduwcp2QvVO3ypDfegz JPhbTr9fSSUp6vn4ox4sYtznxtPF1d7o7A6UXw88u5MqQKRLTA5P8VEFrteEbBSsCj59K+gV QH3dGF4VBnMB2VVQyvz8PHIf1m5BNVXHvzbOzZw3UefSxnuNbO6GLE7qxtRuSZnSADCktOiB 8oVoEDrHx6LxZpse+Yfy9q7jcpjxdLY3ng4wl/8oeOjHychBag261I5EDpvTSDnF+T/pHfPL 0UxRkFGRxifYmz1GsBCZXVUOU84uBXC8jYWVhqMke3v49ij8O59yfPBYrC5lvVJackRP7cBS E/mX2bHsSjcxnUXvrBvoN4zx7N9DfWQBMWhMav/Xksokrqt7ng8ddY39cbVoBrOJCYEe78cq tWt35T6LHW5dXhrgOS99F1RodR2T24GCCzPgEjnvzjanBclzt/fPR+30Ab8LpK2oK/m16mda ClHd16f+jV6qxO9zQSSdNxCzrBEPS3VPXzVTyUhSJLulR2lDmRUfFyk+19vzMpfqRWo2a0NH Jt8ELwBFEaPWzKS2gnincseaLEhpL5p9sHvTVP21EoDK+ZcH78Xvzp0xnhWg+rSbdxLtYw97 /Du
- Ironport-hdrordr: A9a23:wsEZeqs+Lz6IBV9FObC2i3/i7skC94Mji2hC6mlwRA09TyXGra 2TdaUgvyMc1gx7ZJh5o6H6BEGBKUmslqKdkrNhR4tKPTOW81dASbsP0WKM+UyGJ8STzI9gPO JbAtBD4b7LfBJHZKTBkW+F+r8bqbHpnpxAx92utkuFJjsaCZ2Imj0JbjpzZXcGITWua6BYKL Osou584xawc3Ueacq2QlMfWfLYmtHNnJX6JTYbGh8O8mC1/H+VwY+/NyLd8gYVUjtJz7tn23 PCiRbF6qKqtOz+4gPA1lXU849dlLLau5R+7Y23+4YowwfX+0aVjbdaKv6/VfcO0aOSAWMR4Z jxStEbToFOAj3qDyWISFDWqnTdOX4VmgPfIBmj8DbeSIXCNUwH48Ytv/MnTjLJr0Unp91yy6 RNwiaQsIdWFwrJmGDn68HPTAwCrDvDnZMOq59ms5Vka/poVJZB6YgEuE9FGpYJGyz3rIghDe l1FcnZoPJba0mTYXzVtnRmhIXEZAV6Ij6WBkwZ/sCF2Tlfm350i0Me2cwEh38FsJYwUYNN6e jIOrlh0LtOUsgVZ6RgA/ppe7r/NkXdBRbXdG6CK1XuE68Kf3rLtp7s+b0woPqnfZQZpaFC7a gpkGkox1LaV3ieevFmhqc7gywlaF/NLQjQ9g==
- Ironport-phdr: A9a23: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 5YP3Ei2LROLYphDVCH1G2BacQyJriNrzwBc
- Ironport-sdr: 6809460c_BtTjrSPpoDXkScHRQ6Vz68wUGCfYGzjo/BHB1jUKJ+3oszL H6z61q8hi0/j92MejD2+kR9TKo+U8LqPj0r0l2g==
- Msip_labels:
Hi Samuel,
Thank you for your support over the last communications. Please let me summarize from the fundamental design for clarity.
I have a custom struct named rkmatrix, containing some metadata and data buffer pointers:
struct rkmatrix
{
int k;
int kt;
int rows;
int cols;
double* a;
double* a_imag;
double* b;
double* b_imag;
};
I already have a serial application that uses this struct to perform some calculations. I am aiming to refactor the code so that StarPU can help accelerate it. The ultimate goal is to have a StarPU-MPI application, but as a first phase, I am trying to adapt
the serial code so that each calculation is encapsulated as a StarPU task, and the serial execution of the tasks produces the same result as the original code.
For the convenience of StarPU serial implementation, I would like to use a custom data interface to encapsulate the rkmatrix struct. I am debating whether to contain a replicate of rkmatrix in the data interface, i.e.,
struct starpu_rkmatrix_interface
{
int k;
int kt;
int rows;
int cols;
double* a;
double* a_imag;
double* b;
double* b_imag;
};
or to contain a pointer to rkmatrix in the data interface, i.e.,
struct starpu_rkmatrix_interface
{
prkmatrix rkmat;
};
Currently I am using the latter, because I would need pointers to rkmatrix (type prkmatrix) in my task kernels, and with the latter data interface, I can easily implement the get_pointer method as
prkmatrix starpu_rkmatrix_get_ptr(starpu_data_handle_t handle)
{
struct starpu_rkmatrix_interface *rkmatrix_interface =
(struct starpu_rkmatrix_interface *) starpu_data_get_interface_on_node(handle, STARPU_MAIN_RAM);
return rkmatrix_interface->rkmat;
}
However, the design of the latter data interface seems to contradict the "Pointers inside the data interface" section
https://files.inria.fr/starpu/doc/html/AdvancedDataManagement.html#DefiningANewDataInterface_pointers, because prkmatrix is neither purely a pointer to the metadata nor a pointer to data buffer. It points to some metadata: prkmatrix->rows, prkmatrix->cols,
prkmatrix->k, prkmatrix->kt and pointers to data buffers: prkmatrix->a, prkmatrix->a_imag, prkmatrix->b, prkmatrix->b_imag.
My question is, does this conflict mean that I cannot define my data interface the second way and I have to replicate rkmatrix members in my data interface? Do you have any recommendations?
Thank you,
Xinbo
From: Samuel Thibault
Sent: Tuesday, April 22, 2025 12:41 PM
To: Xinbo Li
Subject: Re: Question about Properly Unregister Data for a Custom Interface
Sent: Tuesday, April 22, 2025 12:41 PM
To: Xinbo Li
Subject: Re: Question about Properly Unregister Data for a Custom Interface
Caution! This message was sent from outside the University of Manitoba.
Showing your code bit by bit is really not a way for me to understand
what you are doing.
Xinbo Li, le mar. 22 avril 2025 19:27:21 +0000, a ecrit:
> I do have an allocate_data_on_node method implemented as
> static starpu_ssize_t rkmatrix_allocate_data_on_node(void *data_interface,
> unsigned node)
> {
> rkmat_new = (prkmatrix) starpu_malloc_on_node(node, rk_struct_size); // a
> new rkmatrix pointer
> if (!rkmat_new)
> goto failure;
>
> *rkmat_new = *rkmatrix_interface->rkmat; // copy the meta data (data
> pointers will also be
> // copied but will be reset shortly)
>
> rkmatrix_interface->rkmat = rkmat_new;
So this is allocated in rkmatrix_allocate_data_on_node, and
not in rkmatric_data_register, so it should be released in
rkmatrix_released_data_on_node, and not in rkmatric_data_unregister.
> /* Allocate memory for the data members in rkmat */
> requested_memory_a = rkmatrix_interface->rkmat->rows * rkmatrix_interface->
> rkmat->k * sizeof(rkmatrix_interface->rkmat->a[0]);
> requested_memory_b = rkmatrix_interface->rkmat->cols * rkmatrix_interface->
> rkmat->k * sizeof(rkmatrix_interface->rkmat->b[0]);
>
> a_real = (double*) starpu_malloc_on_node(node, requested_memory_a);
> if (!a_real)
> goto failure;
> a_imag = (double*) starpu_malloc_on_node(node, requested_memory_a);
> if (!a_imag)
> goto failure;
> b_real = (double*) starpu_malloc_on_node(node, requested_memory_b);
> if (!b_real)
> goto failure;
> b_imag = (double*) starpu_malloc_on_node(node, requested_memory_b);
> if (!b_imag)
> goto failure;
>
> /* update the data properly in consequence */
> rkmatrix_interface->rkmat->a = a_real;
> rkmatrix_interface->rkmat->a_imag = a_imag;
> rkmatrix_interface->rkmat->b = b_real;
> rkmatrix_interface->rkmat->b_imag = b_imag;
>
> return 2*(requested_memory_a+requested_memory_b) + rk_struct_size;
>
> failure:
> return -ENOMEM;
> }
>
> Would this method be called on the nodes who do not have the data after the
> registration somehow?
StarPU calls it when it needs to have the data allocated somewhere, and
calls release when it's not useful any more, or on registration, before
calling the unregister_data_handle.
> Also, the reason I implemented an unregistration method and called it
> explicitly is because calling starpu_data_unregister will always seg fault for
> some reason,
Digging the reason is the right way to fix a bug. Doing random things
cannot fix bugs.
> so I thought it might be easier to have a explicit call to the
> unregistration method.
I don't understand what you mean. It's starpu_data_unregister
which shall call the unregister_data_handle method. Not calling
starpu_data_unregister means you'll not synchronize anything, leak all
starpu internal buffers etc.
Samuel
Showing your code bit by bit is really not a way for me to understand
what you are doing.
Xinbo Li, le mar. 22 avril 2025 19:27:21 +0000, a ecrit:
> I do have an allocate_data_on_node method implemented as
> static starpu_ssize_t rkmatrix_allocate_data_on_node(void *data_interface,
> unsigned node)
> {
> rkmat_new = (prkmatrix) starpu_malloc_on_node(node, rk_struct_size); // a
> new rkmatrix pointer
> if (!rkmat_new)
> goto failure;
>
> *rkmat_new = *rkmatrix_interface->rkmat; // copy the meta data (data
> pointers will also be
> // copied but will be reset shortly)
>
> rkmatrix_interface->rkmat = rkmat_new;
So this is allocated in rkmatrix_allocate_data_on_node, and
not in rkmatric_data_register, so it should be released in
rkmatrix_released_data_on_node, and not in rkmatric_data_unregister.
> /* Allocate memory for the data members in rkmat */
> requested_memory_a = rkmatrix_interface->rkmat->rows * rkmatrix_interface->
> rkmat->k * sizeof(rkmatrix_interface->rkmat->a[0]);
> requested_memory_b = rkmatrix_interface->rkmat->cols * rkmatrix_interface->
> rkmat->k * sizeof(rkmatrix_interface->rkmat->b[0]);
>
> a_real = (double*) starpu_malloc_on_node(node, requested_memory_a);
> if (!a_real)
> goto failure;
> a_imag = (double*) starpu_malloc_on_node(node, requested_memory_a);
> if (!a_imag)
> goto failure;
> b_real = (double*) starpu_malloc_on_node(node, requested_memory_b);
> if (!b_real)
> goto failure;
> b_imag = (double*) starpu_malloc_on_node(node, requested_memory_b);
> if (!b_imag)
> goto failure;
>
> /* update the data properly in consequence */
> rkmatrix_interface->rkmat->a = a_real;
> rkmatrix_interface->rkmat->a_imag = a_imag;
> rkmatrix_interface->rkmat->b = b_real;
> rkmatrix_interface->rkmat->b_imag = b_imag;
>
> return 2*(requested_memory_a+requested_memory_b) + rk_struct_size;
>
> failure:
> return -ENOMEM;
> }
>
> Would this method be called on the nodes who do not have the data after the
> registration somehow?
StarPU calls it when it needs to have the data allocated somewhere, and
calls release when it's not useful any more, or on registration, before
calling the unregister_data_handle.
> Also, the reason I implemented an unregistration method and called it
> explicitly is because calling starpu_data_unregister will always seg fault for
> some reason,
Digging the reason is the right way to fix a bug. Doing random things
cannot fix bugs.
> so I thought it might be easier to have a explicit call to the
> unregistration method.
I don't understand what you mean. It's starpu_data_unregister
which shall call the unregister_data_handle method. Not calling
starpu_data_unregister means you'll not synchronize anything, leak all
starpu internal buffers etc.
Samuel
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Xinbo Li, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Samuel Thibault, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Xinbo Li, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Samuel Thibault, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Xinbo Li, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Samuel Thibault, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Xinbo Li, 23/04/2025
- Re: [starpu-devel] Question about Designing Custom Interface for a Custom Struct, Samuel Thibault, 23/04/2025
Archives gérées par MHonArc 2.6.19+.