Procedures

ProcedureLocationProcedure TypeDescription
add_flops pic_flop_recorder Subroutine

Add an int64 variable which contains the FLOPs we use int64 since we might reach very large FLOP counts

Read more…
blas_asum pic_blas_interfaces Interface

this is the interface for the BLAS ASUM routines, it will call SASUM, DASUM, SCASUM, DZASUM Usage: result = blas_asum(x, incx) where x is the input vector, incx is the increment.

Read more…
blas_axpy pic_blas_interfaces Interface

explicit interface for BLAS AXPY routines

Read more…
blas_copy pic_blas_interfaces Interface

explicit interface for BLAS COPY routines

Read more…
blas_dot pic_blas_interfaces Interface

explicit interface for BLAS DOT routines

Read more…
blas_gemm pic_blas_interfaces Interface

explicit interface for BLAS GEMM routines

Read more…
blas_gemv pic_blas_interfaces Interface

explicit interface for BLAS GEMV routines

Read more…
blas_iamax pic_blas_interfaces Interface

explicit interface for BLAS IAMAX routines

Read more…
blas_scal pic_blas_interfaces Interface

explicit interface for BLAS SCAL routines

Read more…
close_log_file pic_logger Subroutine

Close the log file, needs to be called at the end of the program

Read more…
configuration pic_logger Subroutine

Get the current logger verbosity configuration

Read more…
configure pic_logger Subroutine

Configure the logger to be a certain verbosity level

Read more…
configure_file_output pic_logger Subroutine

Configure the logger to file to be a certain verbosity level

Read more…
copy pic_array Interface

copy provides a blas-less implementation of xcopy where x is (i,s,d) icopy, scopy, dcopy if you built pic with BLAS use the copy interface provided there, I will not beat BLAS copy is implemented for (int32, int64, sp, dp) for 1 and 2d arrays of the same types

Read more…
copy_matrix_dp pic_array Subroutine
copy_matrix_int32 pic_array Subroutine
copy_matrix_int64 pic_array Subroutine
copy_matrix_sp pic_array Subroutine
copy_vector_dp pic_array Subroutine
copy_vector_int32 pic_array Subroutine
copy_vector_int64 pic_array Subroutine
copy_vector_sp pic_array Subroutine
debug pic_logger Subroutine

Log a message that will only be printed at the debug level of verbosity

Read more…
dummy_work pic_test_helpers Subroutine

this subroutine runs a random dgemm to create work so that timers and other testing utils work nicely

Read more…
error pic_logger Subroutine

Log a message that will only be printed at the error of verbosity

Read more…
fill pic_array Interface

fill provides a generic interface to assing a value alpha of types (int32, int64, sp, dp) as defined in pic_types.F90 The inteface supports filling 1d and 2d arrays of the specified variables

Read more…
fill_matrix_dp pic_array Subroutine
fill_matrix_int32 pic_array Subroutine
fill_matrix_int64 pic_array Subroutine
fill_matrix_sp pic_array Subroutine
fill_vector_dp pic_array Subroutine
fill_vector_int32 pic_array Subroutine
fill_vector_int64 pic_array Subroutine
fill_vector_sp pic_array Subroutine
flop_rate_add_flops pic_flop_rate Subroutine

add flops to the flop rate type, this will add the flops to the flop recorder Usage: call my_flop_rate%add_flops(1000)

Read more…
flop_rate_get_flop_rate pic_flop_rate Function

get the flop rate in GFLOP/s, this will calculate the flop rate based on the number of flops and the elapsed time

Read more…
flop_rate_get_flops pic_flop_rate Function

get the number of flops recorded in the flop rate type

Read more…
flop_rate_get_time pic_flop_rate Function

get the elapsed time in seconds from the timer contained in the flop rate type

Read more…
flop_rate_report pic_flop_rate Subroutine

report the flop rate, this will print the flop rate in GFLOP/s

Read more…
flop_rate_reset pic_flop_rate Subroutine

reset the flop rate type, this will reset the timer and the flop recorder

Read more…
flop_rate_start_time pic_flop_rate Subroutine

Calls the start method for the timer contained in the flop rate type

Read more…
flop_rate_stop_time pic_flop_rate Subroutine

Calls the stop method for the timer contained in the flop rate type

Read more…
get_first_arg_from_command_line pic_command_line Function

get the first argument from the command line, this is expected to be a filename

Read more…
get_flops pic_flop_recorder Function

Get the int64 number of FLOPs we currently have in the counter

Read more…
get_precision pic_string_utils Function

Get the current precision for real numbers

get_precision pic_string_utils Interface

Obtain the current precision being used to print variables to strings

Read more…
get_threading_mode pic_array Function

get the current threading mode for the array routines Usage: mode = get_threading_mode()

get_threading_mode pic_array Interface

get_threading_mode returns the current threading mode for the array routines Usage: mode = get_threading_mode()

info pic_logger Subroutine

Log a message that will only be printed at the info level of verbosity

Read more…
is_equal pic_test_helpers Interface

The is equal interface is used to circumvent the fact that Fortran, rightfully, complains about comparing two reals without involving a tolerance, i.e. if(a == b) since there is no guarantee that the two reals are exactly equal due to floating point precision issues. The functions are defined as elemental

Read more…
is_equal_dp pic_test_helpers Function
is_equal_sp pic_test_helpers Function
is_sorted pic_array Interface

is_sorted provides a simple way to checking if a 1d array is sorted it is implemented for int32, int64, sp, and dp datatypes. The default is to check if an array is sorted in ascending fashion.

Read more…
is_sorted_dp pic_array Function
is_sorted_int32 pic_array Function
is_sorted_int64 pic_array Function
is_sorted_sp pic_array Function
log pic_logger Subroutine

internal subroutines that processes the message and filters it according to the verbosity level set by the user or the default this is a private subroutine so it is not exposed to the user

pad pic_string_utils Function

function to pad a string with a certain number of characters for nice printing

pad pic_string_utils Interface

adds a number X of spaces to the left of a “string” whcih is just a collection of characters. Mostly used for nice printing

Read more…
performance pic_logger Subroutine

Log a message that will only be printed at the performance of verbosity

Read more…
pic_asum pic_blas_interfaces Interface

general interface of the BLAS ASUM routines, will call SASUM, DASUM, SCASUM, DZASUM

Read more…
pic_axpy pic_blas_interfaces Interface

general interface of the BLAS AXPY routines, will call SAXPY, DAXPY, CAXPY, ZAXPY

Read more…
pic_caxpy pic_blas_interfaces Subroutine

interface for single precision complex AXPY

pic_ccopy pic_blas_interfaces Subroutine

interface for single precision complex copy

pic_cdotc pic_blas_interfaces Function

interface for single precision complex dot product

pic_comm_finalize pic_mpi Subroutine

finalize the MPI library

pic_comm_init pic_mpi Subroutine

initilalize the MPI library and get the size and rank variables

pic_copy pic_blas_interfaces Interface

general interface of the BLAS COPY routines, will call SCOPY, DCOPY, CCOPY, ZCOPY

Read more…
pic_cscal pic_blas_interfaces Subroutine

interface for single precision complex scaling

pic_dasum pic_blas_interfaces Function

interface for double precision absolute sum

pic_daxpy pic_blas_interfaces Subroutine

interface for double precision AXPY

pic_dcopy pic_blas_interfaces Subroutine

interface for double precision copy

pic_ddot pic_blas_interfaces Function

interface for double precision dot product

pic_dgemm pic_blas_interfaces Subroutine

interface for single precision matrix multiplication

pic_dgemv pic_blas_interfaces Subroutine

interface for double precision matrix-vector multiplication

pic_dot pic_blas_interfaces Interface

general interface of the BLAS DOT routines, will call SDOT, DDOT, CDOTC, ZDOTC

Read more…
pic_dscal pic_blas_interfaces Subroutine

interface for double precision scaling

pic_dzasum pic_blas_interfaces Function

interface for double precision complex absolute sum

pic_gemm pic_blas_interfaces Interface

general interface of the BLAS GEMM routines, will call SGEMM, DGEMM, CGEMM, ZGEMM

Read more…
pic_gemv pic_blas_interfaces Interface

general interface of the BLAS GEMV routines, will call SGEMV, DGEMV, CGEMV, ZGEMV

Read more…
pic_iamax pic_blas_interfaces Interface

general interface of the BLAS IAMAX routines, will call ISAMAX, IDAMAX, ICAMAX, IZAMAX

Read more…
pic_icamax pic_blas_interfaces Function

interface for single precision complex index of maximum absolute value

pic_idamax pic_blas_interfaces Function

interface for double precision index of maximum absolute value

pic_isamax pic_blas_interfaces Function

interface for single precision index of maximum absolute value

pic_izamax pic_blas_interfaces Function

interface for double precision complex index of maximum absolute value

pic_print_banner pic Subroutine

my cool banner, work in progress

pic_sasum pic_blas_interfaces Function

interface for single precision absolute sum

pic_saxpy pic_blas_interfaces Subroutine

interface for single precision AXPY

pic_scal pic_blas_interfaces Interface

general interface of the BLAS SCAL routines, will call SSCAL, DSCAL, CSCAL, ZSCAL

Read more…
pic_scasum pic_blas_interfaces Function

interface for single precision complex absolute sum

pic_scopy pic_blas_interfaces Subroutine

interface for single precision copy

pic_sdot pic_blas_interfaces Function

interface for single precision dot product

pic_sgemm pic_blas_interfaces Subroutine

interface for single precision matrix multiplication

pic_sgemv pic_blas_interfaces Subroutine

interface for single precision matrix-vector multiplication

pic_sscal pic_blas_interfaces Subroutine

interface for single precision scaling

pic_sum pic_array Interface

pic_sum provides a threaded alternative to the sum(array) Fortran intrinsic which will be too slow for large sizes of vectors and matrices. Note that this provides the total sum. As opposed to the blas alternative XASUM which does the absolute sum

Read more…
pic_transpose pic_array Interface

pic_transpose provides a blas-less, threaded alternative to the Fortran transpose intrinsic which will be slow for large matrix sizes. pic_transpose does not assume symmetric matrices

Read more…
pic_zaxpy pic_blas_interfaces Subroutine

interface for double precision complex AXPY

pic_zcopy pic_blas_interfaces Subroutine

interface for double precision complex copy

pic_zdotc pic_blas_interfaces Function

interface for double precision complex dot product

pic_zgemm pic_blas_interfaces Subroutine

interface for single precision matrix multiplication

pic_zscal pic_blas_interfaces Subroutine

interface for double precision complex scaling

print_3d_tensor_dp pic_matrix_printer_v2 Subroutine

Print a 3D tensor of dp values

print_3d_tensor_sp pic_matrix_printer_v2 Subroutine

Print a 3D tensor of sp values

print_array pic_matrix_printer Interface

general interface for printing a one or two dimensional array will be deprecated

print_array_v2 pic_matrix_printer_v2 Interface

Generic interface for printing arrays of different types

Read more…
print_array_with_bounds pic_matrix_printer Interface

general interface to print an array within certain bounds

print_asterisk_row pic_output_helpers Subroutine

prints a convenient row of asterisks of length n

print_matrix pic_matrix_printer Subroutine

print a matrix in a given format

print_matrix_dp pic_matrix_printer_v2 Subroutine

print a matrix of dp values

print_matrix_in_format pic_matrix_printer Subroutine

private subroutine to print a matrix in format

print_matrix_int32 pic_matrix_printer_v2 Subroutine

print a matrix of int32 values

print_matrix_int64 pic_matrix_printer_v2 Subroutine

print a matrix of int64 values

print_matrix_m_n pic_matrix_printer Subroutine

Print a matrix of n_cols by n_rows

print_matrix_sp pic_matrix_printer_v2 Subroutine

print a matrix of sp values

print_packed_matrix_dp pic_matrix_printer_v2 Subroutine

Print a packed lower triangular matrix of dp values

print_packed_matrix_int32 pic_matrix_printer_v2 Subroutine

Print a packed lower triangular matrix of int32 values

print_packed_matrix_int64 pic_matrix_printer_v2 Subroutine

Print a packed lower triangular matrix of int64 values

print_packed_matrix_sp pic_matrix_printer_v2 Subroutine

Print a packed lower triangular matrix of sp values

print_plain_matrix pic_matrix_printer Subroutine

private subroutine that prints a plain matrix of n_cols by n_rows

print_plain_vector pic_matrix_printer Subroutine

private subroutine that prints a vector of n_elements

print_vector pic_matrix_printer Subroutine

print a vector

print_vector_dp pic_matrix_printer_v2 Subroutine

print a vector of dp values

print_vector_in_format pic_matrix_printer Subroutine

private subroutine that prints a vector in a format

print_vector_int32 pic_matrix_printer_v2 Subroutine

print a vector of int32 values

print_vector_int64 pic_matrix_printer_v2 Subroutine

print a vector of int64 values

print_vector_n pic_matrix_printer Subroutine

print a vector from start up to n_elements

print_vector_sp pic_matrix_printer_v2 Subroutine

print a vector of sp values

reset_flop_counter pic_flop_recorder Subroutine

Resets the flop counter to 0_int64

Read more…
set_brackets pic_matrix_printer_v2 Subroutine

Set brackets based on output format type

set_precision pic_string_utils Subroutine

Set the precision for real numbers

set_precision pic_string_utils Interface

This routine overrides the default dp precision used for printing strings in the to_string function, the default is : integer(default_int), parameter :: default_dp_precision = 12

Read more…
set_threading_mode pic_array Subroutine

set the threading mode for the array routines, this will set the use_threaded variable to true or false depending on the input

Read more…
set_threading_mode pic_array Interface

set_threading sets the threading mode for the array routines this will set the use_threaded variable to true or false depending on the input Usage: call set_threading_mode(.true.) or call set_threading_mode(.false.)

sum_matrix_dp pic_array Function
sum_matrix_int32 pic_array Function
sum_matrix_int64 pic_array Function
sum_matrix_sp pic_array Function
sum_vector_dp pic_array Function
sum_vector_int32 pic_array Function
sum_vector_int64 pic_array Function
sum_vector_sp pic_array Function
timer_get_elapsed_time pic_timer Function

Returns the elapsed time as a real(dp) variable

Read more…
timer_print_time pic_timer Subroutine

Prints the elapsed time at the time of calling

Read more…
timer_start pic_timer Subroutine

starts the timer. If OMP is enabled, it will use omp_get_wtime() if not, it will use Fortran’s system_clock

Read more…
timer_stop pic_timer Subroutine

stop the timer. If OMP is enabled, it will use omp_get_wtime() if not, it will use Fortran’s system_clock

Read more…
to_string pic_string_utils Interface

converts a variable of type (int32, int64, sp, dp, char, logical) to a “string” which is just a collecting of chars.

Read more…
to_string_char pic_string_utils Function

transform a character to a string

to_string_dp pic_string_utils Function

transform a real(dp) to a string

to_string_int32 pic_string_utils Function

transform an int32 to a string

to_string_int64 pic_string_utils Function

transform an int64 to a string

to_string_logical pic_string_utils Function

tranform a logical to a string either true or false

to_string_sp pic_string_utils Function

transform a real(sp) to a string

to_upper pic_string_utils Function
to_upper pic_string_utils Interface

takes a character variable and transforms it to uppercase

Read more…
transpose_matrix_dp pic_array Subroutine
transpose_matrix_int32 pic_array Subroutine
transpose_matrix_int64 pic_array Subroutine
transpose_matrix_sp pic_array Subroutine
verbose pic_logger Subroutine

Log a message that will only be printed at the verbose level of verbosity

Read more…
warning pic_logger Subroutine

Log a message that will only be printed at the warning level of verbosity

Read more…
write_log_line pic_logger Subroutine

Internal subroutine that will write the message to the log no interface to the public

call~~graph~~CallGraph interface~blas_asum blas_asum interface~blas_axpy blas_axpy interface~blas_copy blas_copy interface~blas_dot blas_dot interface~blas_gemm blas_gemm interface~blas_gemv blas_gemv interface~blas_iamax blas_iamax interface~blas_scal blas_scal interface~copy copy interface~fill fill interface~get_precision get_precision interface~get_threading_mode get_threading_mode interface~is_equal is_equal interface~is_sorted is_sorted interface~pad pad interface~pic_asum pic_asum interface~pic_axpy pic_axpy interface~pic_copy pic_copy interface~pic_dot pic_dot interface~pic_gemm pic_gemm interface~pic_gemv pic_gemv interface~pic_iamax pic_iamax interface~pic_scal pic_scal interface~pic_sum pic_sum interface~pic_transpose pic_transpose interface~print_array print_array interface~print_array_v2 print_array_v2 interface~print_array_with_bounds print_array_with_bounds interface~set_precision set_precision interface~set_threading_mode set_threading_mode interface~to_string to_string interface~to_upper to_upper proc~add_flops flop_recorder_type%add_flops proc~close_log_file logger_type%close_log_file proc~configuration logger_type%configuration proc~configure logger_type%configure proc~configure_file_output logger_type%configure_file_output proc~copy_matrix_dp copy_matrix_dp proc~copy_matrix_int32 copy_matrix_int32 proc~copy_matrix_int64 copy_matrix_int64 proc~copy_matrix_sp copy_matrix_sp proc~copy_vector_dp copy_vector_dp proc~copy_vector_int32 copy_vector_int32 proc~copy_vector_int64 copy_vector_int64 proc~copy_vector_sp copy_vector_sp proc~debug logger_type%debug proc~dummy_work dummy_work proc~error logger_type%error proc~fill_matrix_dp fill_matrix_dp proc~fill_matrix_int32 fill_matrix_int32 proc~fill_matrix_int64 fill_matrix_int64 proc~fill_matrix_sp fill_matrix_sp proc~fill_vector_dp fill_vector_dp proc~fill_vector_int32 fill_vector_int32 proc~fill_vector_int64 fill_vector_int64 proc~fill_vector_sp fill_vector_sp proc~flop_rate_add_flops flop_rate_type%flop_rate_add_flops proc~flop_rate_get_flop_rate flop_rate_type%flop_rate_get_flop_rate proc~flop_rate_get_flops flop_rate_type%flop_rate_get_flops proc~flop_rate_get_time flop_rate_type%flop_rate_get_time proc~flop_rate_report flop_rate_type%flop_rate_report proc~flop_rate_reset flop_rate_type%flop_rate_reset proc~flop_rate_start_time flop_rate_type%flop_rate_start_time proc~flop_rate_stop_time flop_rate_type%flop_rate_stop_time proc~get_first_arg_from_command_line get_first_arg_from_command_line proc~get_flops flop_recorder_type%get_flops proc~get_precision get_precision proc~get_threading_mode get_threading_mode proc~info logger_type%info proc~is_equal_dp is_equal_dp proc~is_equal_sp is_equal_sp proc~is_sorted_dp is_sorted_dp proc~is_sorted_int32 is_sorted_int32 proc~is_sorted_int64 is_sorted_int64 proc~is_sorted_sp is_sorted_sp proc~log logger_type%log proc~pad pad proc~performance logger_type%performance proc~pic_caxpy pic_caxpy proc~pic_ccopy pic_ccopy proc~pic_cdotc pic_cdotc proc~pic_comm_finalize pic_comm_type%pic_comm_finalize proc~pic_comm_init pic_comm_type%pic_comm_init proc~pic_cscal pic_cscal proc~pic_dasum pic_dasum proc~pic_daxpy pic_daxpy proc~pic_dcopy pic_dcopy proc~pic_ddot pic_ddot proc~pic_dgemm pic_dgemm proc~pic_dgemv pic_dgemv proc~pic_dscal pic_dscal proc~pic_dzasum pic_dzasum proc~pic_icamax pic_icamax proc~pic_idamax pic_idamax proc~pic_isamax pic_isamax proc~pic_izamax pic_izamax proc~pic_print_banner pic_print_banner proc~pic_sasum pic_sasum proc~pic_saxpy pic_saxpy proc~pic_scasum pic_scasum proc~pic_scopy pic_scopy proc~pic_sdot pic_sdot proc~pic_sgemm pic_sgemm proc~pic_sgemv pic_sgemv proc~pic_sscal pic_sscal proc~pic_zaxpy pic_zaxpy proc~pic_zcopy pic_zcopy proc~pic_zdotc pic_zdotc proc~pic_zgemm pic_zgemm proc~pic_zscal pic_zscal proc~print_3d_tensor_dp print_3d_tensor_dp proc~print_3d_tensor_sp print_3d_tensor_sp proc~print_asterisk_row print_asterisk_row proc~print_matrix print_matrix proc~print_matrix_dp print_matrix_dp proc~print_matrix_in_format print_matrix_in_format proc~print_matrix_int32 print_matrix_int32 proc~print_matrix_int64 print_matrix_int64 proc~print_matrix_m_n print_matrix_m_n proc~print_matrix_sp print_matrix_sp proc~print_packed_matrix_dp print_packed_matrix_dp proc~print_packed_matrix_int32 print_packed_matrix_int32 proc~print_packed_matrix_int64 print_packed_matrix_int64 proc~print_packed_matrix_sp print_packed_matrix_sp proc~print_plain_matrix print_plain_matrix proc~print_plain_vector print_plain_vector proc~print_vector print_vector proc~print_vector_dp print_vector_dp proc~print_vector_in_format print_vector_in_format proc~print_vector_int32 print_vector_int32 proc~print_vector_int64 print_vector_int64 proc~print_vector_n print_vector_n proc~print_vector_sp print_vector_sp proc~reset_flop_counter flop_recorder_type%reset_flop_counter proc~set_brackets set_brackets proc~set_precision set_precision proc~set_threading_mode set_threading_mode proc~sum_matrix_dp sum_matrix_dp proc~sum_matrix_int32 sum_matrix_int32 proc~sum_matrix_int64 sum_matrix_int64 proc~sum_matrix_sp sum_matrix_sp proc~sum_vector_dp sum_vector_dp proc~sum_vector_int32 sum_vector_int32 proc~sum_vector_int64 sum_vector_int64 proc~sum_vector_sp sum_vector_sp proc~timer_get_elapsed_time pic_timer_type%timer_get_elapsed_time proc~timer_print_time pic_timer_type%timer_print_time proc~timer_start pic_timer_type%timer_start proc~timer_stop pic_timer_type%timer_stop proc~to_string_char to_string_char proc~to_string_dp to_string_dp proc~to_string_int32 to_string_int32 proc~to_string_int64 to_string_int64 proc~to_string_logical to_string_logical proc~to_string_sp to_string_sp proc~to_upper to_upper proc~transpose_matrix_dp transpose_matrix_dp proc~transpose_matrix_int32 transpose_matrix_int32 proc~transpose_matrix_int64 transpose_matrix_int64 proc~transpose_matrix_sp transpose_matrix_sp proc~verbose logger_type%verbose proc~warning logger_type%warning proc~write_log_line write_log_line
Help