/usr/include/af/macros.h is in libarrayfire-dev 3.2.2+dfsg1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | /*******************************************************
* Copyright (c) 2014, ArrayFire
* All rights reserved.
*
* This file is distributed under 3-clause BSD license.
* The complete license agreement can be obtained at:
* http://arrayfire.com/licenses/BSD-3-Clause
********************************************************/
#pragma once
#include <stdio.h>
///
/// Print a line on screen using printf syntax.
/// Usage: Uses same syntax and semantics as printf.
/// Output: \<filename\>:\<line number\>: \<message\>
///
#ifndef AF_MSG
#define AF_MSG(fmt,...) do { \
printf("%s:%d: " fmt "\n", \
__FILE__, __LINE__, ##__VA_ARGS__); \
} while (0);
#endif
/**
* AF_MEM_INFO macro can be used to print the current stats of ArrayFire's memory
* manager.
*
* AF_MEM_INFO print 4 values:
*
* ---------------------------------------------------
* Name | Description
* -------------------------|-------------------------
* Allocated Bytes | Total number of bytes allocated by the memory manager
* Allocated Buffers | Total number of buffers allocated
* Locked (In Use) Bytes | Number of bytes that are in use by active arrays
* Locked (In Use) Buffers | Number of buffers that are in use by active arrays
* ---------------------------------------------------
*
* The `Allocated Bytes` is always a multiple of the memory step size. The
* default step size is 1024 bytes. This means when a buffer is to be
* allocated, the size is always rounded up to a multiple of the step size.
* You can use af::getMemStepSize() to check the current step size and
* af::setMemStepSize() to set a custom resolution size.
*
* The `Allocated Buffers` is the number of buffers that use up the allocated
* bytes. This includes buffers currently in scope, as well as buffers marked
* as free, ie, from arrays gone out of scope. The free buffers are available
* for use by new arrays that might be created.
*
* The `Locked Bytes` is the number of bytes in use that cannot be
* reallocated at the moment. The difference of Allocated Bytes and Locked
* Bytes is the total bytes available for reallocation.
*
* The `Locked Buffers` is the number of buffer in use that cannot be
* reallocated at the moment. The difference of Allocated Buffers and Locked
* Buffers is the number of buffers available for reallocation.
*
* The AF_MEM_INFO macro can accept a string an argument that is printed to screen
*
* \param[in] msg (Optional) A message that is printed to screen
*
* \code
* AF_MEM_INFO("At start");
* \endcode
*
* Output:
*
* AF Memory at /workspace/myfile.cpp:41: At Start
* Allocated [ Bytes | Buffers ] = [ 4096 | 4 ]
* In Use [ Bytes | Buffers ] = [ 2048 | 2 ]
*/
#define AF_MEM_INFO(msg) do { \
size_t abytes = 0, abuffs = 0, lbytes = 0, lbuffs = 0; \
af_err err = af_device_mem_info(&abytes, &abuffs, &lbytes, &lbuffs); \
if(err == AF_SUCCESS) { \
printf("AF Memory at %s:%d: " msg "\n", __FILE__, __LINE__); \
printf("Allocated [ Bytes | Buffers ] = [ %ld | %ld ]\n", abytes, abuffs); \
printf("In Use [ Bytes | Buffers ] = [ %ld | %ld ]\n", lbytes, lbuffs); \
} else { \
fprintf(stderr, "AF Memory at %s:%d: " msg "\nAF Error %d\n", \
__FILE__, __LINE__, err); \
} \
} while(0)
|